﻿/*
开始第二阶段的代码实操，跟随书籍《C Primer Plus》第六版学习。
第一阶段完成了10个程序，第二阶段的前面几个程序将继续是较为简单的，
意在打好基础，坚持！
*/



/*
//第11个程序--P67页--简单的C程序
#include <stdio.h>
int main(void)      //void表明main（）不带任何参数
								//这里用空行分割概念上的多个部分，上方为函数头，下方为函数体。
{    //所有C函数都使用花括号标记函数体的开始和结束。
	int num;     //这行代码叫做声明，定义一个名为num的变量
num = 1;
printf("I am a simple");
printf("coupter.\n");
printf("My favorite number is %d because it is first.\n", num);

return 0;    //有返回值的C函数要有return语句，最好在main（）函数中养成保留return函数的好习惯。
}

*/



/*
//第12个程序--把2音寻转换成尺寸--P88页
#include<stdio.h>

int main(void)

{
	int feet, fathoms;
	fathoms = 2;
	feet = 6 * fathoms;
	printf("There are %d feet in %d fathoms!\n", feet, fathoms);
	printf("Yes,I said %d feet!\n", 6 * fathoms);

	return 0;
}
*/


/*
//第13个程序--把自己的函数加入程序中--P91页
#include<stdio.h>
void butler(void);  //ANSI/ISO C函数原型
//butler()函数原型中第一个void表明，butler（)函数没有返回值，第二个void（butler中的
//意思是butler（）函数不带参数
int main(void)

{
	printf("I will summon the butler function.\n");
	butler();		//butler出现了3次，第一次是函数原型，第2次以函数调用的形式出现在main中，
	//最后一次出现在函数定义中。
	printf("Yes.Bring me some tea and writeable DVDs.\n");

	return 0;
}
void butler(void)//函数定义开始
{
	printf("You rang, sir?\n");

}
*/


/*
//第14个程序--以十进制、八进制、十六进制打印十进制数100
#include <stdio.h>
int main(void)
{
	int x = 100;
	printf("dec = %d;octal = %o;hex = %x\n", x, x, x);
	printf("dec=%d;octal=%#o;hex=%#x\n", x, x, x);		//#表示在八进制和十六进制值前显示0和0x前缀。

	return 0;
}

*/


/*
//第15个程序--更多printf（）的特性--P130页
#include<stdio.h>
int main(void)
{
	unsigned int un = 3000000000;		//int为32位和short为16位的系统
	short end = 200;
	long big = 65537;
	long long verybig = 12345678908642;
	printf("un=%u and %d\n", un, un);
	printf("end=%hd and %d\n", end, end);
	printf("big=%ld and not %hd\n", big, big);
	printf("verybig=%lld and not %ld\n", verybig, verybig);

	return 0;
}
*/


/*
//第16个程序--可移植整数类型名--P141页
#include<stdio.h>
#include<inttypes.h>	//支持可移植类型
int main(void)
{
	int32_t me32;	//me32是一个32位有符号整数变量
	me32 = 45933945;
	printf("First,assume int32_t is int: ");
	printf("me32=%d\n", me32);
	printf("Next,let's not make any assumptions.\n");
	printf("Instead, use a \"macro\" from inttypes.h: ");
	printf("me32=%" PRId32 "\n", me32);		//	参数PRId32被定义在inttypes中的“d”替换。
	//因此等价于printf("me16=%""d""\n",me16);在C语言中 可以把多个连续的字符串组成一个字符串，所以由等价于
	//printf("me16=%d\n",me16);

	return 0;
}
*/


/*
//第20个程序--以两种方式显示float类型的值
#include<stdio.h>
int main(void)
{
	float aboat = 32000.0;
	double abet = 2.14e9;
	long double dip = 5.32e-5;
	printf("%f can be written %e\n", aboat, aboat);
	//下一行要求编辑器支持C99或其中的相关特性
	printf("And it's %a in hexadecimal,powers of 2 notation\n", aboat);
	printf("%f can be written %e\n", abet, abet);
	printf("%Lf can be written %Le\n", dip, dip);
	return 0;
}
*/


/*
//第21个程序--演示舍入错误--P149页
#include<stdio.h>
int main(void)

{
	float a, b;
	b = 2.0e20 + 1.0;
	a = b - 2.0e20;
	printf("%f \n", a);
	return 0;
}
*/


/*
//第22个程序--打印类型的的大小--P154页
#include<stdio.h>
int main(void)
{
	//C99为类型大小提供%zd转换说明
	printf("Type int has a size of %zd bytes.\n", sizeof(int));
	printf("Type char has a size of %zd bytes.\n", sizeof(char));
	printf("Type long has a size of %zd bytes.\n", sizeof(long));
	printf("Type long long has a size of %zd bytes.\n", sizeof(long long));
	printf("Type double has a size of %zd bytes.\n", sizeof(double));
	printf("Type long double has a size of %zd bytes.\n", sizeof(long double));
	return 0;
}
*/



/*
//第23个程序--参数错误的情况--P158页
#include<stdio.h>
int main(void)
{
	int n = 4;
	int m = 5;
	float f = 7.0f;
	float g = 8.0f;
	printf("%d\n", n, m);		//参数太多
	printf("%d%d%f\n", n);		//参数太少
	printf("%d%d\n", f, g);		//值的类型不匹配

	return 0;

}		//执行结果缺少参数或参数类型不匹配导致的结果不同
*/


/*
//第24个程序--浮点数修饰符的组合--P203页
#include<stdio.h>
int main(void)
{
	const double RENT = 3852.99;		//	const变量
	printf("*%f*\n", RENT);		//字段宽度和小数点后面位数均为系统默认设置
	printf("*%e*\n", RENT);		//默认情况下，使用了科学计数法显示
	printf("*%4.2f*\n", RENT);	//限定了字段宽度和小数点后面位数
	printf("*%3.1f*\n", RENT);		//进行了四舍五入
	printf("*%10.3f*\n", RENT);		//规定字段宽度和小数点位数，用空格和0分别补充
	printf("*%10.3E*\n", RENT);		//用E代替了e
	printf("*%+4.2f*\n", RENT);		//包含了+标记
	printf("*%010.2f*\n", RENT);		//0标记使得打印的值前面以0填充来满足字段要求

	return 0;
}
*/


/*
//第25个程序--演示一些标记格式--P205页
#include<stdio.h>
int main(void)
{
	printf("%x%X%#x\n", 31, 31, 31);
	printf("**%d**%d**%d**\n", 42, 42, -42);
	printf("**%5d**%5.3d**%05.3d**\n", 6, 6, 6, 6);

	return 0;
}
*/

/*
//第26个程序--字符串格式--P206页
#include<stdio.h>
#define BLURB "Authentic imitation!"
int main(void)
{
	printf("[%2s]\n", BLURB);		//虽然第一个转换说明是%2s，但是字段被扩大为课容纳字符串中的所有字符
	printf("[%24s]\n", BLURB);		
	printf("[%24.5s]\n", BLURB);		//精度限制了打印字符的个数
	printf("[%-24.5s]\n", BLURB);		//-标记使得文本左对齐输出

	return 0;
}
*/

/*
//第27个程序--使用for循环创建一个立方表--P346页
#include<stdio.h>
int main(void)
{
	int num;
	printf("  n   n cubed\n");
	for (num = 1; num <= 6; num++)
		printf("%5d%5d\n", num, num * num * num);

	return 0;
}
*/


/*
//第28个程序--字符代替数字计数器--P349页
#include<stdio.h>
int main(void)
{
	char ch;
	for (ch = 'a'; ch <= 'z'; ch++)
		printf("The ASCILL value for %c is %d.\n", ch, ch);

	return 0;
}
*/

/*
//第29 个程序--一类邮资--P358页
#include<stdio.h>
int main(void)
{
	const int FIRST_OZ = 46;
	const int NEXT_OZ = 20;
	int ounces, cost;
	printf("  ounces cost\n");
	for (ounces = 1, cost = FIRST_OZ; ounces <= 16;
		ounces++, cost += NEXT_OZ)		//在初试表达式和更新表达式中使用了逗号运算符
		//逗号使得ounces和cost都进行初始化
		printf("%5d $%4.2f\n", ounces, cost / 100.0);

	return 0;
}
*/

/*
//第30个程序--求系列的和--P363页
#include<stdio.h>
int main(void)
{
	int t_ct;	//项计数
	double time, power_of_2;
	int limit;
	printf("Enter the numer of terms of you want: ");
	scanf_s("%d", &limit);
	for (time = 0, power_of_2 = 1, t_ct = 1; t_ct <= limit; t_ct++, power_of_2 *= 2.0)
	{
		time += 1.0 / power_of_2;
		printf("time =%f when terms =%d\n", time, t_ct);
	}

	return 0;
}
*/




